package com.example.administrator.activity.music;

import android.content.Intent;
import android.os.Environment;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.example.administrator.activity.R;

import java.io.File;
import java.util.ArrayList;

public class MusicActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
    String sdPath;
    /**
     * 定义一个集合，保存mp3文件名
     */
    ArrayList<Music> arrayList = new ArrayList<Music>();
    ListView listView;
    private Intent intent;
    String Mp3Name;
    /**
     * 首页 音乐文件的展示
     * 1.找到sd路径
     * 2.把所有mp3 Irc文件上传达SD路径
     * 3.读取SD路径下所有mp3结尾的文件名
     * 4.把mp3文件名 展示在LIstVIew
     *
     * @param savedInstanceState
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_music_list);

        listView=findViewById(R.id.music_listView_mp3list);
        listView.setOnItemClickListener(this);
        String[] p={"android.permission.WRITE_EXTERNAL_STORAGE","android.permission.READ_EXTERNAL_STORAGE"};
        ActivityCompat.requestPermissions(MusicActivity.this,p,1);
        /**
         * 1.获得SD路径，版本原因，strong/emulated/0 权限拒jie
         * 2.将所有Mp3和Irc文件上传sdcard目录
         */
        sdPath=Environment.getExternalStorageDirectory().getPath();
        Log.v("music", sdPath);
        /**
         读取SD路径下所有文件,过滤出所有以.mp3结尾的文件，加到集合中:
         1.以sd路径为参数，构造出File对象
         2.列出该File对象的所有文件和文件名
         3.过滤以.mp3结尾的文件
         4.把.mp3文件加到集合
         */
        File file = new File(sdPath);
        /**
         列出文件夹下的所有文件和文件夹名
         */
        File[] files = file.listFiles();
        for (int i = 0; i <files.length ; i++) {
//            获得文件名，判断是否以.mp3结尾
            if (files[i].getName().endsWith(".mp3")){
                Music music=new Music();
                Mp3Name=files[i].getName();
                music.setMp3Name(Mp3Name);
                arrayList.add(music);
            }
        }
        /**
         * 1.把集合 展示在LIstVIew；需要适配器Adapter
         * 列表项中若只有一个TextView，可以使用ArrayAdapter
         * 若列表项比较复杂，还有按钮之类的，就要使用BaseAdapter（重写4个方法）
         * 参数1：上下文对象；参数2：列表项的布局文件id
         * 参数3：布局文件内的TextVIew的id
         * 参数4：TextVIew要展示的内容数据List
         */
        ArrayAdapter arrayAdapter=new ArrayAdapter(this,R.layout.activity_music_item,R.id.music_item_tv,arrayList);
        listView.setAdapter(arrayAdapter);
    }


    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        intent=new Intent(this,MusicPlayActivity.class);
        /**
         * 点击的列表项 跟 集合事一一对应
         * 获取点击的列表项的mp3文件名
         */
        Mp3Name=arrayList.get(position).getMp3Name();
        intent.putExtra("Mp3Name",Mp3Name);
        intent.putExtra("sdPath",sdPath);
        startActivity(intent);
    }
}
